package com.ruoyi.common.constant;

import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.StringUtils;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 用户类型标签
 *
 * @author
 */
public class SysUserCodeConstants {
    /**
     * 用户类型标签
     */
    @Getter
    @AllArgsConstructor
    public enum UserCode {
        INSTITUTION("institution", "机构"),
        ASSOCIATION("association", "协会"),
        ENTERPRISE("enterprise", "企业"),
        ADMIN("admin", "管理员"),
        ;
        private final String code;
        private final String name;

        @Override
        public String toString() {
            return this.getCode();
        }
    }

    /**
     * 根据code查找name
     *
     * @param code 枚举code
     * @return 枚举对象
     */
    public static String findEnumByCode(String code) {
        for (UserCode statusEnum : UserCode.values()) {
            if (statusEnum.getCode().equals(code)) {
                //如果需要直接返回name则更改返回类型为String,return statusEnum.name;
                return statusEnum.name;
            }
        }
        return code;
    }

    /**
     * 根据name 查找 code
     *
     * @param name 枚举
     * @return 枚举对象
     */
    public static String findEnumByName(String name) {
        for (UserCode statusEnum : UserCode.values()) {
            if (statusEnum.getName().equals(name)) {
                //如果需要直接返回code则更改返回类型为String,return statusEnum.code;
                return statusEnum.code;
            }
        }
        throw new BaseException("用户类型：（" + (StringUtils.isEmpty(name) ? "" : name) + "） 错误");
    }

}
